Ambient communication session

ABSTRACT

In general, this disclosure describes techniques for initiating a communication session when a user indicates she or he is available to participate in the communication session. In one example, a method includes receiving, by a first communication device, an indication that a user is available to participate in a communication session that enables communication between different communication devices. Responsive to receiving the at least one signal, the communication session may be initiated in an inactive mode at the first communication device. The first communication device may receive a request from a second communication device to participate in the communication session. Responsive to receiving the request, the communication session may be switched from the inactive mode to an active mode.

CLAIM OF PRIORITY

This application is a continuation of U.S. patent application Ser. No.13/526,340, filed Jun. 18, 2012, which claims the benefit of priority toU.S. Provisional Application No. 61/497,923, filed Jun. 16, 2011, bothof which are assigned to the assignee hereof and are hereby expresslyincorporated by reference herein in their entirety.

BACKGROUND

A user may socialize with her or his contacts by chatting, watchingtelevision or videos, playing games, or engaging in other activitieswith the contacts. In some instances, a user and his or her contacts maynot be in the same physical location. Instead, the user and the contactsmay rely on other mechanisms to socialize, such as talking on the phone,sending email, or text messaging.

SUMMARY

In one example a method is provided, the method comprising receiving, ata first communication device, at least one signal indicating that isavailable to participate in a communication session that enablescommunication between different communication devices. The methodfurther comprises responsive to receiving the at least one signal,initiating the communication session in an inactive mode of operation atthe first communication device. The method also comprises receiving, atthe first communication device, a request from a second communicationdevice to participate in the communication session and responsive toreceiving the request, switching the communication session at the firstcommunication device from the inactive mode of operation to an activemode of operation.

In another example, another method is provided that comprises receiving,from a first communication device, at least one signal indicating that auser is available to participate in a communication session, wherein thecommunication session enables communication between differentcommunication devices. The method also comprises responsive to receivingthe at least one signal, providing a notification to one or more othercommunication devices associated with the first communication device,wherein the notification indicates that the first computing device isavailable to participate in the communication session. The methodfurther comprises initiating the communication session in an inactivemode, wherein no communication devices are participating thecommunication session while in the inactive mode. The method furthercomprises receiving, from a second communication device of the one ormore other communication devices, a request to join the communicationsession and responsive to receiving the request, switching thecommunication session into an active mode of operation. The method alsocomprises joining the first communication device and the secondcommunication device to the communication session in the active mode ofoperation.

In yet another example, a computer-readable storage medium is provided.The computer-readable storage medium comprising instructions for causinga programmable processor to perform operations comprising receive, at afirst communication device, at least one signal indicating that a useris available to participate in a communication session that enablescommunication between different communication devices. The instructionsfurther comprise responsive to receiving the at least one signal,initiate the communication session in an inactive mode at the firstcommunication device. The instructions also comprise receive, at thefirst communication device, a request from a second communication deviceto participate in the communication session and responsive to receivingthe request, switch the communication session at the first communicationdevice from the inactive mode to an active mode.

In another example, a computing device is provided, comprising a networkinterface to connect to a real-time communication session having aplurality of participants. The computing device also comprises an outputdevice that displays image data. The computing device further comprisesone or more processors configured to receive at least one signalindicating that a user is available to participate in a communicationsession that enables communication between different computing devices,responsive to receiving the at least one signal, initiate thecommunication session in an inactive mode, receive a request from asecond computing device to participate in the communication session,responsive to receiving the request, launch the communication session,and invite the second computing device to join the communicationsession.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example of one or more clientdevices engaged in a communication session that enables communicationbetween the client devices, in accordance with one or more aspects ofthe present disclosure.

FIG. 2 is a block diagram illustrating further details of one example ofa client device shown in FIG. 1, in accordance with one or more aspectsof the present disclosure.

FIG. 3 is a block diagram illustrating one example of a client deviceconfigured to create an ambient communication session, in accordancewith one or more aspects of the present disclosure.

FIG. 4 is a flow chart illustrating an example method for creating anambient communication session, in accordance with one or more aspects ofthe present disclosure.

FIG. 5 is a flow chart illustrating another example method for creatingan ambient communication session, in accordance with one or more aspectsof the present disclosure.

In accordance with common practice, the various described features arenot drawn to scale and are drawn to emphasize features relevant to thepresent application. Like reference characters denote like elementsthroughout the figures and text.

DETAILED DESCRIPTION

Friends, family members, colleagues, or other individuals who wish tosocialize or otherwise communicate may not always be in the samephysical location at the time they would like to communicate. Someindividuals may rely upon telephonic, text, or other forms ofcommunication that support limited forms of socializing. For example,conventional forms of communication may support multi-way audio and/orvideo communication. However, some forms of communication are notsufficient to be able to provide the individuals an experience similarto actually socializing in person. Talking with someone over the phoneor texting may not create a shared experience similar to sitting a roomtogether watching a movie or playing a game.

Techniques of this disclosure may, in various instances, provide amechanism for two or more individuals to socialize in the same virtuallocation (e.g., a virtual communication session). A virtualcommunication session may be a virtual space where multiple users canengage in a conversation and/or share information. For example,individuals participating in the virtual communication session may shareand watch videos, play games, participate in video, audio, or text chat,surf the web, or any combination thereof. In other words, techniques ofthis disclosure may enable the creation of a virtual communicationsession that may approximately mirror the experience of individualshanging out in the same physical location.

When a user is available for a conversation (e.g., hanging out), theuser may select an option in an application (e.g., a social mediaapplication) executed by a computing device that indicates that the useris available. An invitation or notification may be sent to peopleassociated with the user (e.g., the user's contacts or friends)indicating that the user is available to chat. Users may be associatedwith each other through a contacts list, social media, history of beingin a previous communication session together, or other means. Theinvitation may be provided in a social media feed. When a second userdecides to converse, interact, or socialize in a virtual space with thefirst user, a communication session may be initiated between the firstand second users.

Some of the techniques described herein are directed to joining andinitiating virtual communication sessions in a social network. A usermay provide an indication that he or she is available to participate ina communication session. Based on this indication, a communicationsession may be partially initiated or initiated in an inactive mode orstate. A communication session is in an inactive mode in the sense thatwhile the user may indicate she or he is available for a communicationsession, no one is currently participating in the communication session.The communication session may not be fully launched. During an inactivemode, an application for the communication session may be running in thebackground of a computing device that will be used to engage in thecommunication session. An inactive communication session may be referredto as an ambient communication session. A notification or invitation(e.g., via a feed in a social media) may be provided to a group ofpeople associated with the user (e.g., the user's friends). In someexamples, the communication session is not fully launched until anotherparticipant seeks to join the user's inactive communication session.

FIG. 1 is a block diagram illustrating an example of one or more clientdevices 10 and 40-1 through 40-N engaged in a communication session thatenables communication between the client devices 10 and 40-1 through40-N, in accordance with one or more aspects of the present disclosure.Examples of client devices 10 and 40-1 through 40-N (referred tocollectively as “client devices 40”), may include, but are not limitedto, portable or mobile devices such as mobile phones (including smartphones), laptop computers, personal digital assistants (PDAs), portablegaming devices, portable media players, and e-book readers. In someexamples, client devices 10 and 40 are computing devices. Client devices10 and each of client devices 40 may be the same or different types ofdevices. For example, client device 10 and client device 40-1 may bothbe mobile phones. In another example, client device 10 may be a mobilephone and client device 40-1 may be a desktop computer. FIG. 1illustrates an example with three client devices 40. However, othernumbers of client devices 40 may be present in other examples.

As illustrated in FIG. 1, client device 10 may communicate with a serverdevice 30 via at least one communication channel 28. Server device 30may include a communication server 32 that maintains one or morecommunication sessions, such as communication session 34. Variouscomponents described in FIG. 1 may include similar properties andcharacteristics as described throughout this disclosure.

Client device 10 of FIG. 1 may include a communication client 12, atleast one output device 16, and at least one input device 18.Communication client 12 may further include a communication module 14that enables communication client 12 to connect to communication server32 and join one or more communication sessions, such as communicationsession 34. Communication module 14 may further include functionalitythat causes output device 16 to display a graphical user interface (GUI)22 that may be related to communication session 34. Two or more clientdevices 10, 40 may join the same communication session to enablecommunication between the client devices 10, 40 and create a virtualcommunication session. For example, client device 10 and client device40-1 may join communication session 34 to enable communications betweenclient device 10 and client device 40-1, which may be through a virtualcommunication session.

Communication client 12 and communication server 32 may exchange audio,video, text, or other information. The information exchanged betweencommunication client 12 and communication server 32 may depend, at leastin part, on the hardware or software capabilities of client device 10.For example, if client device 10 is a mobile device with relativelylower bandwidth and computing resource capabilities, communicationserver 32 may select the number and quality of the audio and/or videostreams sent to client device 10 based on the lower bandwidth andcomputing resource capabilities of client device 10. Furthermore,communication client 12 may dynamically adjust the bit rate required tosend the information to communication server 32 by, for example,reducing the quality of at least one of the audio and video being sentto communication server 32.

A communication session as used herein is a broad term encompassing asits plain and ordinary meaning, including but not limited to, one ormore objects, which may be at least stored in or executable by hardware,which may enable communication clients coupled to the one or moreobjects to exchange information. The one or more objects may includedata and/or provide functionality of a communication session asdescribed herein. For example, communication session 34 enablescommunication client 12 of client device 10 to communicate with acommunication client 42-1 of client device 40-1.

GUI 22 is one example of a graphical user interface from which a virtualcommunication session may be initiated or participated in. GUI 22 mayinclude a stream of information organized as posts, such as posts 24-1through 24-4 (collectively, “posts 24”) and a sidebar 26. Posts 24 andsidebar 26 may contain personalized information about users, such aseach user invited to or participating in communication session 34. Posts24 may include, for example, one or more of textual, image, audio,haptic, or video information associated with a particular user (e.g.,user 20). Collectively, posts 24 may be referred to as a “personal loop”or “personal stream” of information associated with user 20. Each ofposts 24 may be a post that is generated by user 20 or another user(e.g., one of users 38-1 through 38-N). In some examples, one or more ofposts 24 may be dynamically generated or modified by communicationclient 12 in response to an event, such as user 20 creating or joining avirtual communication session. Posts 24 that are generated or modifiedin response to user 20 creating or joining a virtual communicationsession, such as communication session 34, may include information aboutthe communication session. Some examples of information about thecommunication session that may be included in a post 24 includes a linkfor another user to interact with to join the virtual communicationsession, information about the users currently in the communicationsession, or information about the subject matter being discussed in thevirtual communication session.

Sidebar 26 may include information about one or more other users thatare “connected” to user 20, communication sessions that user 20 mayjoin, notifications of events or invitations, or other information thatmay be relevant to user 20. A user, such as user 38-1, may be“connected” to user 20 through client devices 40-1 and 10 following arequest-approve process. For example, client device 10 may send arequest to client device 40-1 requesting to connect to client device40-1. Client device 40-1 may provide an indication of the request touser 38-1, who may choose to accept or deny the request. Upon acceptingthe request, user 20 and user 38-1 may be connected to each otherthrough communication session 34 using client devices 10 and 40-1,respectively. In some instances, user 38-1 may optionally grantpermission to user 20 to view personal information entered by user 38-1,posts created by user 38-1, or other information connected to user 38-1.

User 20 may group one or more other users that are associated with user20 through some sort of relationship into one or more groups. Groups ofusers associated to user 20 may be referred to as “groups” of contacts,e.g., a relationship group. Each circle may be configured to be able toview information associated with user 20. The circles may each begranted permissions related to accessing certain information associatedwith user 20. In some examples, different circles have differentpermissions. User 20 may determine a level of permission or access foreach user or group associated with user 20. In some examples, arelationship group may be defined to have a level of permission, whichmay be applied to all users in the relationship group. A level ofpermission may determine whether a user has access to a subset ofinformation about user 20 or to a different subset of posts 24 generatedby user 20. If a user is included in two or more different relationshipgroups, user 20 may determine whether the broadest or narrowest set ofpermissions assigned to each relationship group are granted to the userincluded in the two or more different relationship groups. Arelationship group may identify one or more users having at least onecommon characteristic with respect to a user of a communication device.

Similarly, each user, such as each user 38, may grant permission to user20 to view or otherwise access information related to each user 38. Auser, such as user 38-2, may grant user 20 permission based on arelationship group of user 38-2 that user 20 belongs to, a relationshipbetween user 38-2 and user 20. In some examples, posts 24 may includeposts by other users connected to user 20 when the other users grantpermission to user 20 to view or otherwise access the respective posts.

As shown in FIG. 1, communication clients 42-1 through 42-N (referred toherein collectively as “communication clients 42”) may enable users 38-1through 38-N to join one or more communication sessions 34. Each ofcommunication clients 42 executing on client devices 40 may include thesame or similar functionality as communication client 12. As shown inFIG. 1, each of communication clients 42 may participate incommunication session 34. Communication session 34 may correspond to avirtual communication session such that a virtual communication sessionincludes the users associated with each of the communication clientsconnected to communication session 34. In other examples, one or more ofusers 38 may be connected to another communication session hosted bycommunication server 32. In other examples, other numbers of clientdevices 40 are connected to a communication session.

In order to establish or join a virtual communication session, user 20may interact with GUI 22 to cause communication client 12 to generate arequest to create a new communication session or to join an existingcommunication session, such as communication session 34. User 20 maycreate a new communication session by, for example, activating a “createcommunication session” button 28, which may be provided in sidebar 26.Button 28 may be a virtual button included in GUI 22, as is shown inFIG. 1, or may be a physical button on client device 10, or anotherdevice able to be toggled. Responsive to user 20 activating button 28,communication client 12 sends a request to initiate a new communicationsession 34 to communication server 32.

While user 20 is creating the communication session or at any time afterthe communication session is created, user 20 may invite additionalusers (e.g., one or more of users 38) to join the communication session.User 20 may select one or more different “circles” of contacts (e.g.,one or more groups of users connected to user 20), one or more otherusers connected to user 20, or any combination thereof to which to sendan invitation to join the communication session.

There may be many ways to join an existing virtual communicationsession. For example, to join an existing communication session, user 20may activate a join link included in one of posts 24, select acommunication session from a list of available communication sessionsdisplayed in sidebar 26, activate a join link included in a notificationdisplayed by GUI 22, or activate a join link displayed in some externalsource, such as an instant message or posting on a same or differentsocial network. Responsive to user 20 attempting to join an existingvirtual communication session, communication client 12 may sendcommunication server 32 a request to join the virtual communicationsession. The request may include an identifier to a particular virtualcommunication session being hosted by communication server 32. Theidentifier may be included in a join link for the virtual communicationsession. Communication server 32 may connect communication client 12 tothe specified communication session 34.

Thus, FIG. 1 describes an example client device 10 where an ambientcommunication session may be initiated but is not fully launched untilanother client device 40 joins the communication session. An ambientcommunication session may be a communication session that is inactive.An inactive communication session may be one that one or more users arenot currently participating in. As used herein, an ambient communicationsession may be referred to interchangeably as an ambient communicationsession. An ambient communication session is one example of a virtualcommunication session. Additionally, an ambient communication sessionmay provide only a subset of the functionality, features, or aspects ofan active communication session may provide. A communication session mayremain ambient as long as one or more users are not engaged in thecommunication session. An ambient communication session may onlytemporarily be ambient, because as soon as another client device 40joins the communication session, client device 10 may activate thecommunication session.

User 20 may actively indicate that she or he is available to participatein a communication session when user 20 is actually available, thusreducing the possibility that user 20 is considered available when sheor he may actually be unavailable. Because the communication session isprepped and at least partially initiated, when another user attempts tojoin the communication session, switching the communication session intoan active mode may be quicker than starting a new communication session.

FIG. 2 is a block diagram illustrating further details of one example ofclient device 10 shown in FIG. 1, in accordance with one or more aspectsof the present disclosure. FIG. 2 illustrates only one particularexample of client device 10, and many other example embodiments ofclient device 10 may be used in other instances.

As shown in the specific example of FIG. 2, client device 10 includesone or more processors 50, memory 52, one or more network interfaces 54,one or more storage devices 56, one or more input devices 58, one ormore output devices 60, and one or more power sources 62. Client device10 may also include one or more operating systems 64 that are executableby client device 10. Client device 10, in one example, may furtherinclude communication client 12 and one or more applications 66 that arealso executable by client device 10. Each of components 50, 52, 54, 56,58, 60, 62, 64, 66, and 12 may be interconnected (physically,communicatively, or operatively) for inter-component communications.

Processors 50, in one example, are configured to at least implementfunctionality or process instructions for execution within client device10. For example, one or more processors 50 may be capable of processinginstructions stored in memory 52 or instructions stored on one or morestorage devices 56.

Memory 52, in one example, is configured to store information withinclient device 10 during operation. Memory 52, in some examples, isdescribed as a computer-readable storage medium. In some examples,memory 52 may be used as a temporary memory, although memory 52 may beused as long-term storage. Memory 52, in some examples, is described asa volatile memory, meaning that memory 42 does not maintain storedcontents when client device 10 is powered off. Examples of volatilememories include random access memories (RAM), dynamic random accessmemories (DRAM), static random access memories (SRAM), and other formsof volatile memories known in the art. In some examples, memory 52 isused to store program instructions for execution by processors 50.Memory 52, in one example, is used by software or applications runningon client device 10 (e.g., application 6 and/or one or more otherapplications 46) to temporarily store information during programexecution.

Storage devices 56, in some examples, may also include one or morecomputer-readable storage media. Storage devices 56 may be configured tostore large amounts of information. Storage devices 56 may further beconfigured for long-term storage of information. In some examples,storage devices 56 include non-volatile storage elements. Examples ofsuch non-volatile storage elements include magnetic hard discs, opticaldiscs, floppy discs, flash memories, or forms of electricallyprogrammable memories (EPROM) or electrically erasable and programmable(EEPROM) memories.

Client device 10, in some examples, also includes one or more networkinterface 54. Client device 10, in one example, utilizes networkinterfaces 54 to communicate with external devices via one or morenetworks, such as one or more wireless networks. One or more networkinterfaces 54 may be a network interface card, such as an Ethernet card,an optical transceiver, a radio frequency transceiver, or any other typeof device that can send and receive information. Other examples of suchnetwork interfaces may include Bluetooth®, 3G and WiFi® radios in mobilecomputing devices as well as USB. In some examples, client device 10utilizes one or more network interfaces 54 to wirelessly communicatewith an external device such as server device 30 of FIG. 1, a mobilephone, or other networked computing device.

Client device 10, in one example, also includes one or more inputdevices 58. Input devices 58, in some examples, are configured toreceive input from a user through tactile, audio, or video input.Examples of input device 58 may include a presence-sensitive screen, amouse, a keyboard, a voice responsive system, video camera, microphoneor any other type of device for detecting a command from a user. In someexamples, a presence-sensitive screen includes a touch-sensitive screen.

One or more output devices 60 may also be included in client device 10.Output device 60, in some examples, is configured to provide output to auser using tactile, audio, or video output. Output devices 60, in oneexample, may include a presence-sensitive screen or a touch screen.Output devices 60 may utilize a sound card, a video graphics adaptercard, or any other type of device for converting a signal into anappropriate form understandable to humans or machines. Additionalexamples of output device 60 may include a speaker, a cathode ray tube(CRT) monitor, a liquid crystal display (LCD), or any other type ofdevice that can generate intelligible output to a user.

Client device 10, in some examples, may include one or more powersources 62, which may be rechargeable and provide power to client device10. The one or more power sources 62 may be one or more batteries. Theone or more batteries may be made from nickel-cadmium, lithium-ion, orany other suitable material. In another example, the one or more powersources 62 may include a power supply connection that receives powerfrom a power source external to client device 10. The one or more powersources 62 may provide less power to communication client 12 when thevirtual communication session is in an inactive, or ambient state, thanwhen the virtual communication session is in an active state than whenit is in an inactive state.

One or more applications 66 may provide client device 10 with additionalfunctionality. This additional functionality may include, for example, asocial media application, web browsing, calendar, contacts, games,document processing, or any other functionality performed by a computingdevice such as client device 10. One or more applications 66 may causeat least one of output devices 16 to display some elements of agraphical user interface (GUI) 22.

Client device 10 may include one or more operating systems 64. Operatingsystems 64, in some examples, may control the operation of components ofclient device 10. For example, operating system 64, in one example, mayfacilitate the interaction of communication client 12 with processors50, memory 52, network interfaces 54, storage devices 56, input devices58, output devices 60, and power sources 62. As shown in FIG. 2,communication client 12 may include communication module 14 as describedin FIG. 1. Applications 66, communication client 12, and communicationmodule 14 may each include at least one of program instructions or datathat are executable by client device 10. For example, communicationmodule 14 may include instructions that cause communication client 12executing on client device 10 to perform one or more of the operationsand actions described in the present disclosure.

In some examples, at least one of applications 66, communication client12, or communication module 14 may be a part of operating system 64executing on client device 10. In some examples, communication client 12may receive input from one or more input devices 58 of client device 10.Communication client 12 may, for example, receive at least one of audioor video information associated with a communication session (e.g.,virtual communication session 34 of FIG. 1) from other computing devicesparticipating in the communication session.

FIG. 3 is a block diagram illustrating one example of a client device 10configured to create an ambient communication session, in accordancewith one or more aspects of the present disclosure. As shown in FIG. 3,the client device may be the same as or similar to client device 10 ofFIGS. 1 and 2. In other examples, client device 10 may be another clientdevice or computing device. Client device 10 is a communication device.

A user, such as user 20, may operate client device 10. Client device 10may include one or more applications 66, communication client 12, one ormore input devices 58, and one or more output devices 60. In someexamples, one or more of input devices 58 and one or more of the outputdevices 60 may be integrated into a single input/output device, such asa presence-sense screen or a touch-sensitive screen. Client device 10may communicate with a server device via a communication channel, suchas server device 30 and communication channel 28 as shown in FIG. 1.

Communication client 12 may further include a communication module 14.Communication module 14 may provide functionality for client device 10to engage in an interactive session (e.g., a communication session) withone or more other different client devices, such as client devices 40 ofFIG. 1. Communication module 14 may further include functionality thatenables communication client 12 to connect to a communication server,such as server device 30 of FIG. 1, and join one or more communicationsessions.

One or more output devices 60 may provide a graphical user interface(GUI) 80. As shown in FIG. 3, GUI 80 displays application interface 82.GUI 80 may allow user 20 to use and interact with one or moreapplications 66 and communication client 12. Application interface 80may allow user 20 to use and interact with communication client 12. Inother examples, application interface 80 may be a graphical display thatis not interactive.

Application interface 82 may be minimized when a communication sessionis initiated but is in inactive mode. Minimizing an applicationinterface 82 may reduce, or not show any, displayed area of applicationinterface 82. While the communication session is in inactive mode,another application may be in a full-screen mode on GUI 80 of clientdevice 10. For example, an application for the communication session maybe running in the background while user 20 is interacting with otherapplications on client device 10. That is, when running in thebackground, the application for the communication session may be beingexecuted by one or more processors while a user is interacting with oneor more other applications or display elements associated with the oneor more other applications are outputted on a display device. When thecommunication session switches to active mode, for example, when anotheruser joins the communication session, an application associated with thecommunication session is displayed on GUI 80.

Communication module 14 may also provide functionality for client device10 to indicate to one or more other users that user 20 is available toengage in a communication session. A status of user 20 may bedetermined, for example, by client device 10 receiving user inputindicating the status of user 20. In other examples, a status of user 20may be determined based on how user 20 is interacting with client device10, such as client device 10 being instructed to start a communicationsession or based on which application 66 client device 10 is executing.In some examples, the status of user 20 may be provided to one or morecontacts included in a relationship group of user 20. For example,communications module 14 may notify the one or more contacts in therelationship group about the status of user 20. A relationship group mayinclude one or more other users associated with user 20 (e.g., contactsof user 20 grouped together by user 20). Communication module 14 mayalso provide functionality for client device 10 to create an ambientcommunication session.

The communication module 14 may function as a communication sessioninitiator that can pop up a communication session and keep it running inthe background around while user 20 does other things with client device10, such as use another application 66, functionality, or program ofclient device 10. Once people join the ambient communication session,the communication session may be escalated to a full in-page experienceor may open up into a new window or page. In some examples, escalatingthe ambient communication session into a full in-page experience mayinterrupt what user 20 was doing with client device 10.

Because the communication session is not being used to communicatebetween two or more users while the communication session is ambient, anambient communication session may be operating in the background ofclient device 10. By keeping the communication session ambient while nousers are actively engaged with each other, client device 10 may savecomputing resources including power, bandwidth, processor speed, memory,and the like. However, the ambient communication session may beinitialized so when another user wishes to join, the communicationsession can be quickly finalized, saving time. While the communicationsession is ambient (that is, while the communication session isinactive), user 20 may use other features or applications of clientdevice 10, such as one or more applications 66. In one example, acommunication session that is partially initiated by the communicationmodule 14 is an ambient communication session. A partially initiatedcommunication session may be, for example, one in which a communicationsession is created but no users, or only the user who caused thecommunication session to be created, is participating in thecommunication session.

Communication module 14 may also cause output device 60 to display someelements of GUI 80. For example, communication module 14 may cause GUI80 to provide a user-selectable button 84. Button 84 may be a virtual orgraphical button, such as a key of a virtual keyboard, a touch-target,etc. A touch-target may be an area of a touch-sensitive screen thatcorresponds to a functionality in an application, such the functionalitymay be interacted with when the area is depressed. In other examples,button 84 may be a physical button of client device 10, or a button onan input device 58 coupled to client device 10, such as a mouse button,a button on a mobile device, or a key of a keyboard. GUI 80 may includeother graphical controls as well.

Communication module 14 may also cause output device 60 to display anavailability indicator 86. Availability indicator 86 may indicate thatuser 20 has indicated to other users that user 20 is available to engagein a communication session. In some examples, availability indicator 86may indicate that user 20 is not currently available for a communicationsession. However, in some examples, availability indicator 86 may onlybe present in GUI 80 when user 20 has indicated she or he is availablefor a communication session. In some examples, availability indicator 86may only be displayed when the communication session is ambient, notwhen user 20 is engaged in the communication session.

Availability indicator 86 may be a graphical icon or shape, such as asmall circle, whose visual properties are different when user 20 isavailable than when user 20 is unavailable. For example, availabilityindicator 86 may be a shape that is red when user 20 is unavailable tocommunication session and green when user 20 is available tocommunication session. In other examples, availability indicator 86 isnot present, regardless of whether an ambient communication session hasbeen initiated. A similar indication to availability indicator 86 may beoutputted by other client devices, such as client devices 30, toindicate the availability of user 20.

In some examples, user 20 may be using a social media application, suchas application 66, where a list of contacts of user 20 may be provided,such as in a list of icons or thumb images related to each of thecontacts. Each contact of user 20, referred to herein as a friend, maybe associated with an indication similar to availability indicator 86that informs user 20 if the friend is available for a communicationsession or desires to participate in a communication session. If thefriend is available to communication session in a communication session,the indication may reflect that the friend is available. If the friendis offline or otherwise unavailable, an indication may indicate thefriend is unavailable. In some examples, user 20 is able to seeindications of users who are not necessarily directly in a friend listof user 20. In other examples, an image or other indicator of a friendonly shows up on the list if the friend is either available or online.

User 20 may toggle or select button 84 in order to indicate that user 20is available or unavailable for a communication session. If user 20 waspreviously unavailable, user 20 may toggled button 84 to instruct clientdevice 10 to indicate that user 20 is available for a communicationsession. Availability indicator 86 may then be displayed on outputdevice 60. Availability indicator 86 may change to reflect theavailability of user 20. In contrast, if user 20 was previouslyavailable and toggled button 84, availability indicator 86 would showthat user 20 is unavailable. Toggling or selecting button 84 may causecommunication client 12 to issue a signal indicating to other computingdevices, such as client devices 40, that user 20 is available toparticipate in a communication session. The signal may be broadcasted toa relationship group of user 20.

User 20 may be using one or more applications 66 while communicationmodule 14 operates an ambient communication session in the background ofclient device 10. When the communication session is ambient, user 20 maynot actually be active in the communication session. In another example,user 20 may be the only participant in the ambient communicationsetting. That is, no other user may be in the communication session atthat time. In some examples, responsive to a second user joining thecommunication session, the communication session is fully initializedand ceases to be an ambient communication session. In other examples,the communication session may be ambient only if user 20 is notcurrently participating in the communication session.

Creating an ambient communication session allows user 20 to indicatethat she or he is available to communication session with contacts orother users. Communication module 14 provides functionality that allowsuser 20 to inform contacts or other users that he or she is trulyavailable. Because user 20 may actively indicate that he or she is readyand available to communication session, it is more likely that user 20is actually available when client device 10 indicates to client devices40 that user 20 is available than by other means of determiningavailability. For example, some chat applications, executed by acomputing device, may determine that a user is available to chat whenthe chat application detects a keystroke. However, although a keystrokemay imply that the user is at the computing device, it does notnecessarily mean the user is available for a chat. Therefore, providinguser 20 with the ability to indicate when he or she is actuallyavailable for a communication session improves the likelihood that user20 is actually available when availability indicator 86 indicates user20 is available. Thus, user 20 may be in control of her or his presence.

Joining the communication session may cause the user who initiated thecommunication session to enter or join the user's own communicationsession. An ambient communication session may have multiple formats,which include small in-page to full in-page, one-way invitations anddisplay and sound controls. An invitation to join a communicationsession may be provided to the initiator's contacts that are currentlyavailable. An invitation or feed may be updated based on who joins orleaves the communication session. Invitation may also be emailed ortexted.

FIG. 4 is a flow chart illustrating an example method 100 for creatingan ambient communication session, in accordance with one or more aspectsof the present disclosure. For purposes of illustration only, the methodof FIG. 4 may be described with respect to client device 10 of FIGS. 1,2, and 3. However, the example method 100 of FIG. 4 may be performedusing other devices.

Method 100 may include receiving, at a first communication device, atleast one signal indicating that a user is available to participate in acommunication session that enables communication between differentcommunication devices (110). The user may be a user of the firstcommunication device. For example, user 20 may desire to indicate thathe or she is available to engage in a communication session and providesclient device 10 with user input signaling that user 20 is available fora communication session. The signal may be generated in response to user20 providing client device 10 with user input that indicates user 20 ispresent and available to communication session. For example, user 20 mayselect a button, such as button 84, to indicate that she or he isavailable to participate in a communication session. Upon determiningthe button was selected, client device 10 may issue a signal indicatingthat user 20 is available for participation in a communication session.The signal may be broadcasted to a circle of contacts of user 20,informing the contacts that user 20 is available for a conversation (forexample, user 20 wants to chat).

Method 100 may further responsive to receiving the at least one signal,initiating the communication session in an inactive mode at the firstcommunica tion device (112). When the communication session is in aninactive mode, the communication session may not be fully enabled. Forexample, user 20 may not be participating in the communication sessionwhile it is inactive. User 20 may not be using client device 10 at allor may be using other features, such as those from one or moreapplications 66 of client device 10. In an inactive mode, an applicationassociated with the communication session is at least one of minimizedor operating in the background of client device 10.

An ambient communication session may not be in a full screen mode. Inanother example, an ambient communication session may be an in-pagemole, which may be full-screen or less than full-screen. In a fullscreen mode, an output device 60, such as a display device, of clientdevice 10 may display the communication session using part of or theentire graphical display area of the output device 60. For example, GUI80 may display a communication session across part or all of thegraphical area.

Initiation of a communication session may entail creating an ambientcommunication session, without fully launching all the features oraspects of a communications application used during a live communicationsession. In some examples, user 20 does not join the communicationsession when initiation begins. When user 20 has established an ambientcommunication session, the ambient communication session may beminimized in client device 10. While the communication session is ininactive mode (for example, ambient), an indication may be outputted byan output device, such as output device 60. An indication may informuser 20 that an ambient communication session is established and thather or his contacts have been notified that user 20 is available.

Client device 10 may send an indication to a server device or otherclient devices of other users that user 20 has begun an ambientcommunication session. In some examples, this may be performed alongwith starting initiation of the ambient communication session. Thenotification may be an invitation that is displayed via a feed in asocial media application of the one or more other communication devicesor users. The one or more other users may belong to a circle of contactsof user 20. The indication may notify the other users that user 20 isavailable for hanging out in a communication session. The indication maybe provided on a live feed of a social network. Similarly, communicationclient 12 may receive notifications from one or more other users thatthe one or more other users are available for hanging out. Communicationmodule 14 may provide an indication of other users' availability forparticipating in a communication session, for example, by displaying amessage or indication on GUI 80.

While client device 10 has established an ambient communication session,method 100 may receive, at the first communication device, a requestfrom a second communication device to participate in the communicationsession (114). The request to participate in the communication sessionis from a second user using a second communication device, wherein thesecond user makes the request. In some examples, the second user mayhave received an indication that user 20 is available for hanging out ina communication session before the second user requested to join thecommunication session of user 20. As used herein, joining acommunication session may refer to initiating a new communicationsession or joining an already established communication session. Analready established communication session may have one or more usersparticipating in the communication session.

Responsive to receiving the request, the communication session may beswitched at the first communication device from the inactive mode to anactive mode (116). That is, the communication session has begun in thesense that participants may be interacting in the communication session.Switching the communication session to the active mode may includebringing an application associated with the communication session into afull-screen mode on the first communication device. Completinginitiation of a communication session may include enabling more featuresthan a subset of features that was available when the communicationsession was ambient. In some examples, completion occurs when anotheruser besides user 20 has joined the communication session. Upon anotheruser joining the communication session of user 20, the ambientcommunication session may cease to be ambient. That is, upon completinginitiation of the communication session, communication session may bebrought into an active mode on client device 10. For example, activemode may entail bringing an application associated with thecommunication session into a full-screen mode on client device 10. Whilethe communication session is ambient, user 20 may or may not be in thecommunication session. However, in some examples, completing initiationof the communication session includes user 20 joining the communicationsession.

In other examples, when user 20 indicates he or she is available tocommunication session through a communication session, a communicationsession is not initiated. Instead, a notification may be sent to otherusers that user 20 is available. The other users may be selected becausethey are also available, they are associated with a particular context,they are within the circle of contacts of user 20, or by some otherselection criteria.

In another example, responsive to receiving the at least one signal thatthe communication device is available to participate in a communicationsession, method 100 may provide a notification to at least one othercommunication device that the first communication device is available toparticipate in the communication session. In some examples, thenotification may be provided only to other communication devices thatare identified as currently available to participate in thecommunication session. The notification may be displayed in a live feedin a social media application associated with the other communicationdevices.

Method 100 may further include displaying a notification that the firstcommunication device is available to participate in the communicationsession in a live feed of a social media application only when the firstcommunication device is logged into the social media application.

In some examples, switching the communication session from active modeback to inactive mode may occur when only the first communication deviceis participating in the communication session. In such a case, the firstcommunication device may receive at least one signal indicating that thefirst communication device is unavailable to participate in thecommunication session. Responsive to receiving the at least one signalindicating that the first communication device is unavailable, method100 may further include ending the communication session.

In some examples, receiving at the first communication device, the atleast one signal further comprises receiving, at an input device of thefirst communication device, user input indicating the user is availablefor the communication session. When the at least one signal is at leastone first signal, initiating the communication session may furtherinclude providing, by the first communication device, at least onesecond signal to a host device connected to the first communicationdevice, wherein the at least one second signal indicates the firstcommunication device is available to participate in the communicationsession. The method may further include creating, by the host device,the communication session.

In another example, method 100 includes providing a touch target on atouch-sensitive display device of the first communication device,wherein toggling the touch target changes a status of the communicationdevice between available and unavailable.

FIG. 5 is a flow chart illustrating another example method 200 forcreating an ambient communication session, in accordance with one ormore aspects of the present disclosure. For purposes of illustrationonly, method 200 of FIG. 5 may be described with respect to serverdevice 30 of FIG. 1. However, the example method 100 of FIG. 4 may beperformed using other devices.

Method 200 may include receiving, from a first communication device, atleast one signal indicating that a user of the first communicationdevice is available to participate in a communication session, whereinthe communication session enables communication between differentcommunication devices (210). Responsive to receiving the at least onesignal, method 200 may further include providing a notification to oneor more other communication devices associated with the firstcommunication device, wherein the notification indicates that the firstcomputing device is available to participate in the communicationsession (220).

Method 200 may further include initiating the communication session inan inactive mode, wherein no communication devices are participating thecommunication session while in the inactive mode (230). Method 200 mayfurther include receiving, from a second communication device of the oneor more other communication devices, a request to join the communicationsession (240). For example, server 30 receives a request to joincommunication session 34 from client device 40-1. Responsive toreceiving the request, method 200 may switch the communication sessioninto an active mode (250). The first communication device and the secondcommunication device may be joined into the active communication session(260).

In another example, method 200 may include determining that the othercommunication devices are associated with the first communication devicewhen identities associated with the other communication devices areincluded in one or more relationship groups of the first communicationdevice. For example, server 30 may determine which client devices 40 areincluded in a relationship group of client device 10. Sever 30 may senda notification that user 20 is available for a communication session tothose client devices 40 that are in a relationship group of clientdevice 10.

In another example, method 200 may include receiving, from the firstcomputing device, at least one signal authorizing the second computingdevice to participate in the communication session. Joining the firstcommunication device and the second communication device into the activecommunication session may be based on receiving the at least one signalauthorizing the second computing device to participate in thecommunication session. In other examples, responsive to switching thecommunication session into the active mode, method 200 may includesignaling the first communication device to bring an applicationexecuting the communication session on the first communication deviceinto a full-screen mode.

Aspects of the present disclosure may improve social interaction becauseusers may indicate when they are actually available to engage in acommunication session. In addition, the richness of the communicatedreactions, e.g., video or audio representations of user expressions, mayfurther improve the social interaction because such representations mayconvey more information with less user effort.

The techniques described herein may be implemented in hardware,software, firmware, or any combination thereof. Various featuresdescribed as modules, units or components may be implemented together inan integrated logic device or separately as discrete but interoperablelogic devices or other hardware devices. In some cases, various featuresof electronic circuitry may be implemented as one or more integratedcircuit devices, such as an integrated circuit chip or chipset.

If implemented in hardware, this disclosure may be directed to anapparatus such a processor or an integrated circuit device, such as anintegrated circuit chip or chipset. Alternatively or additionally, ifimplemented in software or firmware, the techniques may be realized atleast in part by a computer-readable data storage medium comprisinginstructions that, when executed, cause a processor to perform one ormore of the methods described above. For example, the computer-readabledata storage medium may store such instructions for execution by aprocessor.

A computer-readable medium may form part of a computer program product,which may include packaging materials. A computer-readable medium maycomprise a computer data storage medium such as random access memory(RAM), read-only memory (ROM), non-volatile random access memory(NVRAM), electrically erasable programmable read-only memory (EEPROM),flash memory, magnetic or optical data storage media, and the like. Insome examples, an article of manufacture may comprise one or morecomputer-readable storage media.

In some examples, the computer-readable storage media may comprisenon-transitory media. The term “non-transitory” may indicate that thestorage medium is not embodied in a carrier wave or a propagated signal.In certain examples, a non-transitory storage medium may store data thatcan, over time, change (e.g., in RAM or cache).

The code or instructions may be software and/or firmware executed byprocessing circuitry including one or more processors, such as one ormore digital signal processors (DSPs), general purpose microprocessors,application-specific integrated circuits (ASICs), field-programmablegate arrays (FPGAs), or other equivalent integrated or discrete logiccircuitry. Accordingly, the term “processor,” as used herein may referto any of the foregoing structure or any other structure suitable forimplementation of the techniques described herein. In addition, in someaspects, functionality described in this disclosure may be providedwithin software modules or hardware modules.

Various embodiments have been described. These and other embodiments arewithin the scope of the following examples.

The invention claimed is:
 1. A computer-implemented method, comprising:receiving, at a first communication device, at least one signalindicating that a user is available to participate in a communicationsession via a communication application that enables communicationbetween different communication devices; initiating, at the firstcommunication device, the communication session in an inactive mode ofoperation in response to receiving the at least one signal, wherein theinactive mode comprises executing the communication application in abackground of the first communication device; executing, at the firstcommunication device, another application in a foreground of the firstcommunication device while the communication session is in the inactivemode; receiving, at the first communication device, a request from asecond communication device to participate in the communication session;and switching, at the first communication device, the communicationsession from the inactive mode of operation to an active mode ofoperation in response to receiving the request, wherein the first andsecond communication devices are joined to the communication session inthe active mode.
 2. The computer-implemented method of claim 1, whereinthe switching the communication session from the inactive mode ofoperation to the active mode of operation comprises executing thecommunication application in the foreground of the first communicationdevice.
 3. The computer-implemented method of claim 1, wherein the atleast one signal is a user input to the first communication device thatactively indicates that the user is available for the communicationsession.
 4. The computer-implemented method of claim 1, furthercomprising: receiving, at the first communication device, at least oneauthorization signal from the user authorizing the second communicationdevice to participate in the communication session, wherein theswitching the communication session from the inactive mode of operationto the active mode of operation is further in response to receiving theat least one authorization signal.
 5. The computer-implemented method ofclaim 1, further comprising: providing, from the first communicationdevice, a notification to at least one other communication deviceindicating that the first communication device is available toparticipate in the communication session.
 6. The computer-implementedmethod of claim 5, wherein the notification is provided in a live feedin a social media application associated with the at least one othercommunication device.
 7. The computer-implemented method of claim 1,wherein initiating the communication session in the inactive mode ofoperation comprises launching the communication application in thebackground of the first communication device while the other applicationis executing in the foreground of the first communication device.
 8. Afirst computing device, comprising: one or more processors; and anon-transitory computer-readable storage medium having a plurality ofinstructions stored thereon, which, when executed by the one or moreprocessors, cause the one or more processors to perform operationscomprising: receiving at least one signal indicating that a user isavailable to participate in a communication session via a communicationapplication that enables communication between different computingdevices; initiating the communication session in an inactive mode ofoperation in response to receiving the at least one signal, wherein theinactive mode comprises executing the communication application in abackground of the first computing device; executing another applicationin a foreground of the first computing device while the communicationsession is in the inactive mode; receiving a request from a secondcomputing device to participate in the communication session; andswitching the communication session from the inactive mode of operationto an active mode of operation in response to receiving the request,wherein the first and second computing devices are joined to thecommunication session in the active mode.
 9. The first computing deviceof claim 8, wherein the switching the communication session from theinactive mode of operation to the active mode of operation comprisesexecuting the communication application in the foreground of the firstcomputing device.
 10. The first computing device of claim 8, wherein theat least one signal is a user input to the first computing device thatactively indicates that the user is available for the communicationsession.
 11. The first computing device of claim 8, wherein theoperations further comprise: receiving at least one authorization signalfrom the user authorizing the second computing device to participate inthe communication session, wherein the switching the communicationsession from the inactive mode of operation to the active mode ofoperation is further in response to receiving the at least oneauthorization signal.
 12. The first computing device of claim 8, whereinthe operations further comprise: providing a notification to at leastone other computing device indicating that the first computing device isavailable to participate in the communication session.
 13. The firstcomputing device of claim 12, wherein the notification is provided in alive feed in a social media application associated with the at least oneother computing device.
 14. The first computing device of claim 8,wherein initiating the communication session in the inactive mode ofoperation comprises launching the communication application in thebackground of the first computing device while the other application isexecuting in the foreground of the first computing device.
 15. Anon-transitory computer-readable storage medium having a plurality ofinstructions stored thereon, which, when executed by a first computingdevice, cause the first computing device to perform operationscomprising: receiving at least one signal indicating that a user isavailable to participate in a communication session via a communicationapplication that enables communication between different computingdevices; initiating the communication session in an inactive mode ofoperation in response to receiving the at least one signal, wherein theinactive mode comprises executing the communication application in abackground of the first computing device; executing another applicationin a foreground of the first computing device while the communicationsession is in the inactive mode; receiving a request from a secondcomputing device to participate in the communication session; andswitching the communication session from the inactive mode of operationto an active mode of operation in response to receiving the request,wherein the first and second computing devices are joined to thecommunication session in the active mode.
 16. The non-transitorycomputer-readable storage medium of claim 15, wherein the switching thecommunication session from the inactive mode of operation to the activemode of operation comprises executing the communication application inthe foreground of the first computing device.
 17. The non-transitorycomputer-readable storage medium of claim 15, wherein the at least onesignal is a user input to the first computing device that activelyindicates that the user is available for the communication session. 18.The non-transitory computer-readable storage medium of claim 15, whereinthe operations further comprise: receiving at least one authorizationsignal from the user authorizing the second computing device toparticipate in the communication session, wherein the switching thecommunication session from the inactive mode of operation to the activemode of operation is further in response to receiving the at least oneauthorization signal.
 19. The non-transitory computer-readable storagemedium of claim 15, wherein the operations further comprise: providing anotification to at least one other computing device indicating that thefirst computing device is available to participate in the communicationsession.
 20. The non-transitory computer-readable storage medium ofclaim 19, wherein the notification is provided in a live feed in asocial media application associated with the at least one othercomputing device.
 21. The non-transitory computer-readable storagemedium of claim 15, wherein initiating the communication session in theinactive mode of operation comprises launching the communicationapplication in the background of the first computing device while theother application is executing in the foreground of the first computingdevice.